module Package_ = struct
  module Primary = struct
    type t = {
      ecosystem : Githubc2_components_security_advisory_ecosystems.t;
      name : string option; [@default None]
    }
    [@@deriving yojson { strict = false; meta = true }, show, eq]
  end

  include Json_schema.Additional_properties.Make (Primary) (Json_schema.Obj)
end

module Vulnerable_functions = struct
  type t = string list option [@@deriving yojson { strict = false; meta = true }, show, eq]
end

type t = {
  package : Package_.t option; [@default None]
  patched_versions : string option; [@default None]
  vulnerable_functions : Vulnerable_functions.t option; [@default None]
  vulnerable_version_range : string option; [@default None]
}
[@@deriving yojson { strict = false; meta = true }, show, eq]
